#ifndef ASSERT_H_
#define ASSERT_H_


#include <assert.h>

namespace systems {

		/*void _assert(const char * _Message, const char *_File, unsigned _Line)
		{
		#ifdef DEBUG
			assert(_Message);
		#endif
		}*/

} // namespace system

#ifdef  NDEBUG

#define LIBA_ASSERT(_Expression)    ((void)0)
#define LIBA_FAIL(_Expression)      ((void)0)
#define LIBA_FAIL_UNEXPECTED()		((void)0)

#else

#define LIBA_ASSERT(_Expression) (void)( (!!(_Expression)) || (systems::_assert(#_Expression, __FILE__, __LINE__), 0) )
#define LIBA_FAIL(_Expression) (void)( systems::_assert(_Expression, __FILE__, __LINE__) )
#define LIBA_FAIL_UNEXPECTED()		(void)( systems::_assert("Unexpected failure", __FILE__, __LINE__) )

#endif  /* NDEBUG */

#endif